package com.chenyu.util;

import java.io.*;
import java.util.*;

public class TxtMofify {
	private TxtMofify(){}
	public static final String ADDRESS = "";

	/**
	 * TXT内容追加
	 * @param content
	 * @param path
	 */
	public static void Add(String content,String path){
		RandomAccessFile randomFile = null;
		try {
			// 打开一个随机访问文件流，按读写方式
			randomFile = new RandomAccessFile(path, "rw");
			// 文件长度，字节数
			long fileLength = randomFile.length();
			// 将写文件指针移到文件尾。
			randomFile.seek(fileLength);
			randomFile.writeBytes(content);
		} catch (IOException e) {
			e.printStackTrace();
		} finally{
			if(randomFile != null){
				try {
					randomFile.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}
	/**
	 * 读取文本文件
	 * @param pathname 地址
	 * @return  返回string集合
	 */
	public static List<String> ReadText(String pathname){
		List<String> StrList =  new ArrayList<String>();
		File filename = null;
		InputStreamReader reader = null;
		BufferedReader br = null;
		try { // 防止文件建立或读取失败，用catch捕捉错误并打印，也可以throw
			filename = new File(pathname);
			reader = new InputStreamReader(
					new FileInputStream(filename)); // 建立一个输入流对象reader
			new BufferedReader(reader); // 建立一个对象，它把文件内容转成计算机能读懂的语言
			String line = "";
			while ((line = br.readLine()) != null) {
				StrList.add(line);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally{
			try {
				br.close();
				reader.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		return StrList;
	}

	/**
	 * 写入文本文件
	 * @param pathname  地址
	 * @param content  内容
	 * @return	是否成功
	 * @throws Exception
	 */
	public static boolean WriterText(String pathname,String content) throws Exception{
		File writename = null;
		BufferedWriter out = null;
		try {
			writename = new File(pathname); // 相对路径，如果没有则要建立一个新的output。txt文件
			writename.createNewFile(); // 创建新文件
			out= new BufferedWriter(new FileWriter(writename));
			out.write(content); // \r\n即为换行
			return true;
		} catch (Exception e) {
			e.printStackTrace();
		} finally{
			out.flush(); // 把缓存区内容压入文件
			out.close(); // 最后记得关闭文件
		}
		return false;
	}
	/**
	 * 将InputStreamd对象的内容写入本地文件
	 * @param destination 写入本地目录
	 * @param input	输入流
	 * @throws IOException
	 */
	public static void WriteToLocal(String destination, InputStream input)
			throws IOException {
		int index;
		byte[] bytes = new byte[1024];
		FileOutputStream downloadFile = new FileOutputStream(destination);
		while ((index = input.read(bytes)) != -1) {
			downloadFile.write(bytes, 0, index);
			downloadFile.flush();
		}
		downloadFile.close();
		input.close();
	}

}

